#include QMK_KEYBOARD_H
#include "xulkal.h"

#ifdef PROTOCOL_LUFA
#include "lufa.h"
#include "split_util.h"
#endif

#define EXPAND_LAYOUT(...) LAYOUT(__VA_ARGS__)

// Define your non-alpha grouping in this define's LAYOUT, and all your BASE_LAYERS will share the same mod/macro columns

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  /* Qwerty Layout
   * ,------------------------------------------------.  ,------------------------------------------------.
   * | GESC |   1  |   2  |  3   |  4   |  5   |   -  |  |   =  |  6   |  7   |  8   |  9   |  0   | BkSp |
   * |------+------+------+------+------+------|------|  |------|------+------+------+------+------+------|
   * | Tab  |   Q  |   W  |  E   |  R   |  T   |   [  |  |   ]  |  Y   |  U   |  I   |  O   |  P   |   \  |
   * |------+------+------+------+------+------|------|  |------|------+------+------+------+------+------|
   * |FN(CAPS)| A  |   S  |   D  |  F   |  G   |   `  |  |   '  |  H   |  J   |  K   |  L   |  ;   | Enter|
   * |------+------+------+------+------+------+------|  |------+------+------+------+------+------+------|
   * | Sft[ |   Z  |   X  |   C  |  V   |  B   | RGB  |  |RGBRST|  N   |  M   |  ,   |  .   |  /   | Sft] |
   * |------+------+------+------+------+------+------|  |------+------+------+------+------+------+------|
   * | Ctl- |  Win | LOWER| RAISE| Alt  | Space| ENC1 |  | ENC2 | Space| Left |  Up  | Down | Right| Ctl= |
   * |------+------+------+------+------+------+------|  |------+------+------+------+------+------+------'
   *                                    | Space| DEL  |  | Enter| Space|
   *                                    `-------------'  `-------------'
   */
  [_QWERTY] = EXPAND_LAYOUT( \
    _________________QWERTY_L1_________________,  KC_MINS,  KC_EQL,   _________________QWERTY_R1_________________, \
    _________________QWERTY_L2_________________,  KC_LBRC,  KC_RBRC,  _________________QWERTY_R2_________________, \
    _________________QWERTY_L3_________________,  KC_GRV,   KC_QUOT,  _________________QWERTY_R3_________________, \
    _________________QWERTY_L4_________________,  RGB_TOG,  RGBRST,   _________________QWERTY_R4_________________, \
    _________________QWERTY_L5_________________,  KC_ENC1,  KC_ENC2,  _________________QWERTY_R5_________________, \
                                         KC_SPC,  TD_DEL,   KC_ENT,   KC_SPC \
  ),

#ifndef GAMELAYER_DISABLE
  [_GAME] = EXPAND_LAYOUT( \
    ___________________GAME_L1_________________,  KC_MINS,  KC_EQL,   ___________________GAME_R1_________________, \
    ___________________GAME_L2_________________,  KC_LBRC,  KC_RBRC,  ___________________GAME_R2_________________, \
    ___________________GAME_L3_________________,  KC_GRV,   KC_QUOT,  ___________________GAME_R3_________________, \
    ___________________GAME_L4_________________,  RGB_TOG,  RGBRST,   ___________________GAME_R4_________________, \
    ___________________GAME_L5_________________,  KC_ENC1,  KC_ENC2,  ___________________GAME_R5_________________, \
                                         KC_SPC,  KC_DEL,   KC_ENT,   KC_SPC \
  ),
#endif

  [_LOWER] =  EXPAND_LAYOUT( \
    __________________LOWER_L1_________________, KC_PMNS, KC_PPLS, __________________LOWER_R1_________________, \
    __________________LOWER_L2_________________, _______, _______, __________________LOWER_R2_________________, \
    __________________LOWER_L3_________________, _______, _______, __________________LOWER_R3_________________, \
    __________________LOWER_L4_________________, _______, _______, __________________LOWER_R4_________________, \
    __________________LOWER_L5_________________, _______, _______, __________________LOWER_R5_________________, \
                                        _______, _______, _______, _______ \
  ),

  [_RAISE] = EXPAND_LAYOUT( \
    __________________RAISE_L1_________________, _______, _______, __________________RAISE_R1_________________, \
    __________________RAISE_L2_________________, _______, _______, __________________RAISE_R2_________________, \
    __________________RAISE_L3_________________, _______, _______, __________________RAISE_R3_________________, \
    __________________RAISE_L4_________________, _______, _______, __________________RAISE_R4_________________, \
    __________________RAISE_L5_________________, _______, _______, __________________RAISE_R5_________________, \
                                        _______, _______, _______, _______ \
  ),

#ifdef TRILAYER_ENABLED
  [_ADJUST] = EXPAND_LAYOUT( \
    _________________ADJUST_L1_________________, _______, _______, _________________ADJUST_R1_________________, \
    _________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, \
    _________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, \
    _________________ADJUST_L4_________________, _______, _______, _________________ADJUST_R4_________________, \
    _________________ADJUST_L5_________________, _______, _______, _________________ADJUST_R5_________________, \
                                        _______, _______, _______, _______ \
  ),
#endif
};

